<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,IE=9,chrome=1"><meta name="generator" content="MATLAB 2021b"><title>Connect to a ROS Network</title><style type="text/css">.rtcContent { padding: 30px; } .S0 { margin: 3px 10px 5px 4px; padding: 0px; line-height: 28.8px; min-height: 0px; white-space: pre-wrap; color: rgb(213, 80, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 24px; font-weight: 400; text-align: left;  }
.S1 { margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left;  }
.S2 { margin: 10px 0px 20px; padding-left: 0px; font-family: Helvetica, Arial, sans-serif; font-size: 14px;  }
.S3 { margin-left: 56px; line-height: 21px; min-height: 0px; text-align: left; white-space: pre-wrap;  }
.S4 { margin: 3px 10px 5px 4px; padding: 0px; line-height: 20px; min-height: 0px; white-space: pre-wrap; color: rgb(60, 60, 60); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 20px; font-weight: 700; text-align: left;  }
.CodeBlock { background-color: #F7F7F7; margin: 10px 0 10px 0;}
.S5 { border-left: 1px solid rgb(233, 233, 233); border-right: 1px solid rgb(233, 233, 233); border-top: 1px solid rgb(233, 233, 233); border-bottom: 1px solid rgb(233, 233, 233); border-radius: 4px 4px 0px 0px; padding: 6px 45px 4px 13px; line-height: 17.234px; min-height: 18px; white-space: nowrap; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px;  }
.S6 { color: rgb(64, 64, 64); padding: 10px 0px 6px 17px; background: rgb(255, 255, 255) none repeat scroll 0% 0% / auto padding-box border-box; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px; overflow-x: hidden; line-height: 17.234px;  }
/* Styling that is common to warnings and errors is in diagnosticOutput.css */.embeddedOutputsErrorElement {    min-height: 18px;    max-height: 550px;}
.embeddedOutputsErrorElement .diagnosticMessage-errorType {    overflow: auto;}
.embeddedOutputsErrorElement.inlineElement {}
.embeddedOutputsErrorElement.rightPaneElement {}
/* Styling that is common to warnings and errors is in diagnosticOutput.css */.embeddedOutputsWarningElement {    min-height: 18px;    max-height: 550px;}
.embeddedOutputsWarningElement .diagnosticMessage-warningType {    overflow: auto;}
.embeddedOutputsWarningElement.inlineElement {}
.embeddedOutputsWarningElement.rightPaneElement {}
/* Copyright 2015-2019 The MathWorks, Inc. *//* In this file, styles are not scoped to rtcContainer since they could be in the Dojo Tooltip */.diagnosticMessage-wrapper {    font-family: Menlo, Monaco, Consolas, "Courier New", monospace;    font-size: 12px;}
.diagnosticMessage-wrapper.diagnosticMessage-warningType {    color: rgb(255,100,0);}
.diagnosticMessage-wrapper.diagnosticMessage-warningType a {    color: rgb(255,100,0);    text-decoration: underline;}
.diagnosticMessage-wrapper.diagnosticMessage-errorType {    color: rgb(230,0,0);}
.diagnosticMessage-wrapper.diagnosticMessage-errorType a {    color: rgb(230,0,0);    text-decoration: underline;}
.diagnosticMessage-wrapper .diagnosticMessage-messagePart,.diagnosticMessage-wrapper .diagnosticMessage-causePart {    white-space: pre-wrap;}
.diagnosticMessage-wrapper .diagnosticMessage-stackPart {    white-space: pre;}
.embeddedOutputsTextElement,.embeddedOutputsVariableStringElement {    white-space: pre;    word-wrap:  initial;    min-height: 18px;    max-height: 550px;}
.embeddedOutputsTextElement .textElement,.embeddedOutputsVariableStringElement .textElement {    overflow: auto;}
.textElement,.rtcDataTipElement .textElement {    padding-top: 3px;}
.embeddedOutputsTextElement.inlineElement,.embeddedOutputsVariableStringElement.inlineElement {}
.inlineElement .textElement {}
.embeddedOutputsTextElement.rightPaneElement,.embeddedOutputsVariableStringElement.rightPaneElement {    min-height: 16px;}
.rightPaneElement .textElement {    padding-top: 2px;    padding-left: 9px;}
.S7 { margin: 10px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left;  }
.S8 { border-left: 0px none rgb(0, 0, 0); border-right: 0px none rgb(0, 0, 0); border-top: 0px none rgb(0, 0, 0); border-bottom: 0px none rgb(0, 0, 0); border-radius: 0px; padding: 0px; line-height: 15.6px; min-height: 16px; white-space: pre; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 12px;  }
.S9 { margin: 20px 10px 5px 4px; padding: 0px; line-height: 20px; min-height: 0px; white-space: pre-wrap; color: rgb(60, 60, 60); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 20px; font-weight: 700; text-align: left;  }</style></head><body><div class = rtcContent><h1  class = 'S0'><span>Connect to a ROS Network</span></h1><div  class = 'S1'><span>ROS网络由一个ROS主节点(</span><span style=' font-style: italic;'>master )</span><span>和多个ROS节点</span><span style=' font-style: italic;'>nodes </span><span>组成。ROS master通过跟踪所有活跃的ROS实体来促进ROS网络中的通信。每个节点都需要向ROS master注册，以便能够与网络的其他部分通信。MATLAB®可以启动ROS master，也可以在MATLAB之外启动master（例如，在其他计算机上）。</span></div><div  class = 'S1'><span>当您使用ROS时，通常遵循以下步骤：</span></div><ol  class = 'S2'><li  class = 'S3'><span style=' font-style: italic;'>Connect to a ROS network</span><span>.。要连接到ROS网络，可以在MATLAB中创建ROS主节点或连接到现有的ROS主节点。在这两种情况下，MATLAB还将创建并向master注册自己的ROS节点（称为MATLAB全局节点</span><span style=' font-style: italic;'>global node</span><span>）。</span><a href = "docid:ros_ref.bupf5_j_1"><span style=' font-family: monospace;'>rosinit</span></a><span>函数管理这个过程。</span></li><li  class = 'S3'><span style=' font-style: italic;'>Exchange data</span><span>. 一旦连接，MATLAB通过发布者publishers、订阅者subscribers和服务services与其他ROS节点交换数据。</span></li><li  class = 'S3'><span style=' font-style: italic;'>Disconnect from the ROS network</span><span>. 调用调用rosshutdown函数来断开MATLAB与ROS网络的连接。</span></li></ol><div  class = 'S1'><span>此示例演示如何：</span></div><ul  class = 'S2'><li  class = 'S3'><span>Create a ROS master in MATLAB</span></li><li  class = 'S3'><span>Connect to an external ROS master</span></li></ul><div  class = 'S1'><span>先决条件Prerequisites:</span><span> </span><a href = "docid:ros_ug.mw_cb3fdf75-613d-45b1-90e1-aad102b9a24a"><span>Get Started with ROS</span></a></div><h2  class = 'S4'><span>Create a ROS Master in MATLAB</span></h2><ul  class = 'S2'><li  class = 'S3'><span>要在MATLAB中创建ROS master，请在没有任何参数的情况下调用</span><a href = "docid:ros_ref.bupf5_j_1"><span style=' font-family: monospace;'>rosinit</span></a><span> 。此函数还创建全局节点global node，MATLAB使用该节点与ROS网络中的其他节点进行通信。</span></li></ul><div class="CodeBlock"><div class="inlineWrapper outputs"><div  class = 'S5'><span style="white-space: pre"><span >rosinit</span></span></div><div  class = 'S6'><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="3297CA4E" data-testid="output_0" style="width: 716px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement eoOutputContent" data-width="686" data-height="61" data-hashorizontaloverflow="false" style="max-height: 261px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">Launching ROS Core...
...........Done in 4.6155 seconds.
Initializing ROS master on http://192.168.118.1:11311.
Initializing global node /matlab_global_node_31713 with NodeURI http://LAPTOP-TG3AQJDL:14577/</div></div></div></div></div><div  class = 'S7'><span>在MATLAB外部的ROS节点现在可以加入ROS网络。他们可以使用MATLAB主机的主机名或IP地址连接到MATLAB中的ROS主机。</span></div><div  class = 'S1'><span>您可以通过调用</span><a href = "docid:ros_ref.bupf5_j_8"><span style=' font-family: monospace;'>rosshutdown</span></a><span>关闭ROS master和全局节点。</span></div><div class="CodeBlock"><div class="inlineWrapper outputs"><div  class = 'S5'><span style="white-space: pre"><span >rosshutdown</span></span></div><div  class = 'S6'><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="49536273" data-testid="output_1" style="width: 716px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement eoOutputContent" data-width="686" data-height="32" data-hashorizontaloverflow="false" style="max-height: 261px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">Shutting down global node /matlab_global_node_31713 with NodeURI http://LAPTOP-TG3AQJDL:14577/
Shutting down ROS master on http://192.168.118.1:11311.</div></div></div></div></div><h2  class = 'S4'><span>Connect to an External ROS Master</span></h2><div  class = 'S1'><span>您还可以使用</span><a href = "docid:ros_ref.bupf5_j_1"><span style=' font-family: monospace;'>rosinit</span></a><span> 命令连接到外部ROS主机（例如在机器人或虚拟机上运行）。您可以通过两种方式指定主机的地址：通过IP地址或运行主机的计算机的主机名。</span></div><div  class = 'S1'><span>每次调用rosinit之后，必须先调用</span><a href = "docid:ros_ref.bupf5_j_8"><span style=' font-family: monospace;'>rosshutdown</span></a><span>，然后再使用不同的语法调用rosinit。为简洁起见，这些示例中省略了对rosshutdown的调用。</span></div><div  class = 'S1'><span>“master_host”是一个示例主机名，“192.168.1.1”是外部ROS主机master的一个示例IP地址。根据外部主机在网络中的位置调整这些地址。如果在指定的地址找不到主机，这些命令将失败。</span></div><div class = 'preformatted-matlab' style = 'margin: 10px 3px 10px 55px; padding: 10px 10px 10px 5px; '><div  class = 'S8'><span style="white-space: pre"><span >rosinit(</span><span style="color: rgb(170, 4, 249);">'192.168.1.1'</span><span >)</span></span></div><div  class = 'S8'><span style="white-space: pre"><span >rosinit(</span><span style="color: rgb(170, 4, 249);">'master_host'</span><span >)</span></span></div></div><div  class = 'S1'><span>两个对</span><a href = "docid:ros_ref.bupf5_j_1"><span style=' font-family: monospace;'>rosinit</span></a><span>的调用都假设主机接受端口11311（标准ROS主机端口）上的网络连接。如果主机master在其他端口上运行，则可以将其指定为第二个参数。要连接到在主机名</span><span style=' font-family: monospace;'>master_host</span><span>和端口12000上运行的ROS主机，请使用以下命令：</span></div><div class = 'preformatted-matlab' style = 'margin: 10px 3px 10px 55px; padding: 10px 10px 10px 5px; '><div  class = 'S8'><span style="white-space: pre"><span >rosinit(</span><span style="color: rgb(170, 4, 249);">'master_host'</span><span >,12000)</span></span></div></div><div  class = 'S1'><span>如果知道主节点的整个统一资源标识符（URI），则可以使用以下语法创建全局节点并连接到此主节点master：</span></div><div class = 'preformatted-matlab' style = 'margin: 10px 3px 10px 55px; padding: 10px 10px 10px 5px; '><div  class = 'S8'><span style="white-space: pre"><span >rosinit(</span><span style="color: rgb(170, 4, 249);">'http://192.168.1.1:12000'</span><span >)</span></span></div></div><h2  class = 'S4'><span>Node Host Specification</span></h2><div  class = 'S1'><span>在某些情况下，您的计算机可能连接到多个网络并具有多个IP地址。此图显示了一个示例。</span></div><div  class = 'S1'><img class = "imageNode" src = "" width = "526" height = "395" alt = "" style = "vertical-align: baseline; width: 526px; height: 395px;"></img></div><div  class = 'S1'><span>左下角的计算机运行MATLAB并连接到两个不同的网络。一个子网的IP地址是73.195.120.50，另一个子网的IP地址是192.168.1.100。此计算机要连接到TurtleBot®计算机上IP地址为192.168.1.1的ROS主机。作为向主节点注册的一部分，MATLAB全局节点必须指定其他ROS节点可以到达的IP地址或主机名。TurtleBot上的所有节点都将使用此地址向MATLAB中的全局节点发送数据。</span></div><div  class = 'S1'><span>当使用主机的IP地址调用</span><a href = "docid:ros_ref.bupf5_j_1"><span style=' font-family: monospace;'>rosinit</span></a><span>时，它会尝试检测用于联系主机的网络接口，并将其用作全局节点的IP地址。如果此自动检测失败，可以在rosinit调用中使用</span><span style=' font-family: monospace;'>NodeHost</span><span>t name-value对显式指定IP地址或主机名。NodeHost name-value可以对与已经显示的任何其他语法一起使用。</span></div><div  class = 'S1'><span>这些命令将计算机的IP地址作为192.168.1.100公布到ROS网络。</span></div><div class = 'preformatted-matlab' style = 'margin: 10px 3px 10px 55px; padding: 10px 10px 10px 5px; '><div  class = 'S8'><span style="white-space: pre"><span >rosinit(</span><span style="color: rgb(170, 4, 249);">'192.168.1.1'</span><span >,</span><span style="color: rgb(170, 4, 249);">'NodeHost'</span><span >,</span><span style="color: rgb(170, 4, 249);">'192.168.1.100'</span><span >)</span></span></div><div  class = 'S8'><span style="white-space: pre"><span >rosinit(</span><span style="color: rgb(170, 4, 249);">'http://192.168.1.1:11311'</span><span >,</span><span style="color: rgb(170, 4, 249);">'NodeHost'</span><span >,</span><span style="color: rgb(170, 4, 249);">'192.168.1.100'</span><span >)</span></span></div><div  class = 'S8'><span style="white-space: pre"><span >rosinit(</span><span style="color: rgb(170, 4, 249);">'master_host'</span><span >,</span><span style="color: rgb(170, 4, 249);">'NodeHost'</span><span >,</span><span style="color: rgb(170, 4, 249);">'192.168.1.100'</span><span >)</span></span></div></div><div  class = 'S1'><span>在ROS网络中注册节点后，您可以使用命令</span><a href = "docid:ros_ref.bupf5_j_4"><span style=' font-family: monospace;'>rosnode</span></a><span> </span><span style=' font-family: monospace;'>info </span><span style=' font-style: italic; font-family: monospace;'>&lt;nodename&gt;</span><span>查看它播发的地址。通过调用r</span><span style=' font-family: monospace;'>rosnode list</span><span>可以看到所有注册节点的名称。</span></div><h2  class = 'S4'><span>ROS Environment Variables</span></h2><div  class = 'S1'><span>在高级案例中，您可能希望通过标准的ROS环境变量指定ROS主节点的地址和公布的advertised 节点地址。前面章节中解释的语法对于大多数用例来说应该足够了。如果没有向</span><a href = "docid:ros_ref.bupf5_j_1"><span style=' font-family: monospace;'>rosinit</span></a><span>提供参数，函数还将检查标准ROS环境变量的值。这些变量是</span><span style=' font-family: monospace;'>ROS_MASTER_URI</span><span>, </span><span style=' font-family: monospace;'>ROS_HOSTNAME</span><span>, and </span><span style=' font-family: monospace;'>ROS_IP</span><span>。您可以使用</span><a href = "docid:matlab_ref.f72-1120523"><span style=' font-family: monospace;'>getenv</span></a><span> 命令查看它们的当前值：</span></div><div class = 'preformatted-matlab' style = 'margin: 10px 3px 10px 55px; padding: 10px 10px 10px 5px; '><div  class = 'S8'><span style="white-space: pre"><span >getenv(</span><span style="color: rgb(170, 4, 249);">'ROS_MASTER_URI'</span><span >)</span></span></div><div  class = 'S8'><span style="white-space: pre"><span >getenv(</span><span style="color: rgb(170, 4, 249);">'ROS_HOSTNAME'</span><span >)</span></span></div><div  class = 'S8'><span style="white-space: pre"><span >getenv(</span><span style="color: rgb(170, 4, 249);">'ROS_IP'</span><span >)</span></span></div></div><div  class = 'S1'><span>可以使用</span><a href = "docid:matlab_ref.f76-1101530"><span style=' font-family: monospace;'>setenv</span></a><span> 命令设置这些变量。设置环境变量后，调用没有参数的</span><span style=' font-family: monospace;'>rosinit</span><span>。ROS master的地址由</span><span style=' font-family: monospace;'>ROS_MASTER_URI</span><span>指定，全局节点的通告地址advertised address由</span><span style=' font-family: monospace;'>ROS_IP</span><span> or </span><span style=' font-family: monospace;'>ROS_HOSTNAME</span><span>指定。如果您为</span><span style=' font-family: monospace;'>rosinit</span><span>指定其他参数，它们将覆盖环境变量中的值。</span></div><div class = 'preformatted-matlab' style = 'margin: 10px 3px 10px 55px; padding: 10px 10px 10px 5px; '><div  class = 'S8'><span style="white-space: pre"><span >setenv(</span><span style="color: rgb(170, 4, 249);">'ROS_MASTER_URI'</span><span >,</span><span style="color: rgb(170, 4, 249);">'http://192.168.1.1:11311'</span><span >)</span></span></div><div  class = 'S8'><span style="white-space: pre"><span >setenv(</span><span style="color: rgb(170, 4, 249);">'ROS_IP'</span><span >,</span><span style="color: rgb(170, 4, 249);">'192.168.1.100'</span><span >)</span></span></div><div  class = 'S8'><span style="white-space: pre"><span >rosinit</span></span></div></div><div  class = 'S1'><span>您不必同时设置</span><span style=' font-family: monospace;'>ROS_HOSTNAME</span><span>和</span><span style=' font-family: monospace;'>ROS_IP</span><span>。如果两者都已设置，则以</span><span style=' font-family: monospace;'>ROS_HOSTNAME</span><span>为准。</span></div><h2  class = 'S4'><span>Verify Connection</span></h2><div  class = 'S1'><span>要使ROS连接正常工作，必须确保所有节点都能与主节点master和彼此通信。各个节点必须与主节点通信以注册订阅者subscribers、发布者publishers和服务services。它们还必须能够相互通信以发送和接收数据。如果你的ROS网络设置不正确，就有可能发送数据而无法接收数据（反之亦然）。</span></div><div  class = 'S1'><span>此图显示了一个ROS网络，其中有一个ROS主节点master和两个向主节点注册的不同节点。每个节点联系主节点以查找ROS网络中另一个节点的通告地址advertised address。一旦每个节点知道另一个节点的地址，就可以在不需要主节点参与的情况下建立数据交换。</span></div><div  class = 'S1'><img class = "imageNode" src = "" width = "717" height = "399" alt = "" style = "vertical-align: baseline; width: 717px; height: 399px;"></img></div><h2  class = 'S9'><span>Next Steps</span></h2><ul  class = 'S2'><li  class = 'S3'><span>See</span><span> </span><a href = "docid:ros_ug.mw_fa34dc6f-351e-4ab5-8680-46563496814b"><span>Exchange Data with ROS Publishers and Subscribers</span></a><span> to explore publishers and subscribers in ROS.</span></li></ul><div  class = 'S1'><span style=' font-style: italic;'>Copyright 2014-2015 The MathWorks, Inc.</span></div><div  class = 'S1'></div>
<br>
<!-- 
##### SOURCE BEGIN #####
%% Connect to a ROS Network
% ROS网络由一个ROS主节点(_master )_和多个ROS节点_nodes_ 组成。ROS master通过跟踪所有活跃的ROS实体来促进ROS网络中的通信。每个节点都需要向ROS 
% master注册，以便能够与网络的其他部分通信。MATLAB®可以启动ROS master，也可以在MATLAB之外启动master（例如，在其他计算机上）。
% 
% 当您使用ROS时，通常遵循以下步骤：
%% 
% # _Connect to a ROS network_.。要连接到ROS网络，可以在MATLAB中创建ROS主节点或连接到现有的ROS主节点。在这两种情况下，MATLAB还将创建并向master注册自己的ROS节点（称为MATLAB全局节点_global 
% node_）。<docid:ros_ref.bupf5_j_1 |rosinit|>函数管理这个过程。
% # _Exchange data_. 一旦连接，MATLAB通过发布者publishers、订阅者subscribers和服务services与其他ROS节点交换数据。
% # _Disconnect from the ROS network_. 调用调用rosshutdown函数来断开MATLAB与ROS网络的连接。
%% 
% 此示例演示如何：
%% 
% * Create a ROS master in MATLAB
% * Connect to an external ROS master
%% 
% 先决条件Prerequisites: <docid:ros_ug.mw_cb3fdf75-613d-45b1-90e1-aad102b9a24a Get 
% Started with ROS>
%% Create a ROS Master in MATLAB
%% 
% * 要在MATLAB中创建ROS master，请在没有任何参数的情况下调用<docid:ros_ref.bupf5_j_1 |rosinit|> 
% 。此函数还创建全局节点global node，MATLAB使用该节点与ROS网络中的其他节点进行通信。

rosinit
%% 
% 在MATLAB外部的ROS节点现在可以加入ROS网络。他们可以使用MATLAB主机的主机名或IP地址连接到MATLAB中的ROS主机。
% 
% 您可以通过调用<docid:ros_ref.bupf5_j_8 |rosshutdown|>关闭ROS master和全局节点。

rosshutdown
%% Connect to an External ROS Master
% 您还可以使用<docid:ros_ref.bupf5_j_1 |rosinit|> 命令连接到外部ROS主机（例如在机器人或虚拟机上运行）。您可以通过两种方式指定主机的地址：通过IP地址或运行主机的计算机的主机名。
% 
% 每次调用rosinit之后，必须先调用<docid:ros_ref.bupf5_j_8 |rosshutdown|>，然后再使用不同的语法调用rosinit。为简洁起见，这些示例中省略了对rosshutdown的调用。
% 
% “master_host”是一个示例主机名，“192.168.1.1”是外部ROS主机master的一个示例IP地址。根据外部主机在网络中的位置调整这些地址。如果在指定的地址找不到主机，这些命令将失败。
%%
% 
%   rosinit('192.168.1.1')
%   rosinit('master_host')
%
%% 
% 两个对<docid:ros_ref.bupf5_j_1 |rosinit|>的调用都假设主机接受端口11311（标准ROS主机端口）上的网络连接。如果主机master在其他端口上运行，则可以将其指定为第二个参数。要连接到在主机名|master_host|和端口12000上运行的ROS主机，请使用以下命令：
%%
% 
%   rosinit('master_host',12000)
%
%% 
% 如果知道主节点的整个统一资源标识符（URI），则可以使用以下语法创建全局节点并连接到此主节点master：
%%
% 
%   rosinit('http://192.168.1.1:12000')
%
%% Node Host Specification
% 在某些情况下，您的计算机可能连接到多个网络并具有多个IP地址。此图显示了一个示例。
% 
% 
% 
% 左下角的计算机运行MATLAB并连接到两个不同的网络。一个子网的IP地址是73.195.120.50，另一个子网的IP地址是192.168.1.100。此计算机要连接到TurtleBot®计算机上IP地址为192.168.1.1的ROS主机。作为向主节点注册的一部分，MATLAB全局节点必须指定其他ROS节点可以到达的IP地址或主机名。TurtleBot上的所有节点都将使用此地址向MATLAB中的全局节点发送数据。
% 
% 当使用主机的IP地址调用<docid:ros_ref.bupf5_j_1 |rosinit|>时，它会尝试检测用于联系主机的网络接口，并将其用作全局节点的IP地址。如果此自动检测失败，可以在rosinit调用中使用|NodeHost|t 
% name-value对显式指定IP地址或主机名。NodeHost name-value可以对与已经显示的任何其他语法一起使用。
% 
% 这些命令将计算机的IP地址作为192.168.1.100公布到ROS网络。
%%
% 
%   rosinit('192.168.1.1','NodeHost','192.168.1.100')
%   rosinit('http://192.168.1.1:11311','NodeHost','192.168.1.100')
%   rosinit('master_host','NodeHost','192.168.1.100')
%
%% 
% 在ROS网络中注册节点后，您可以使用命令<docid:ros_ref.bupf5_j_4 |rosnode|> |info _<nodename>_|查看它播发的地址。通过调用r|rosnode 
% list|可以看到所有注册节点的名称。
%% ROS Environment Variables
% 在高级案例中，您可能希望通过标准的ROS环境变量指定ROS主节点的地址和公布的advertised 节点地址。前面章节中解释的语法对于大多数用例来说应该足够了。如果没有向<docid:ros_ref.bupf5_j_1 
% |rosinit|>提供参数，函数还将检查标准ROS环境变量的值。这些变量是|ROS_MASTER_URI|, |ROS_HOSTNAME|, and 
% |ROS_IP|。您可以使用<docid:matlab_ref.f72-1120523 |getenv|> 命令查看它们的当前值：
%%
% 
%   getenv('ROS_MASTER_URI')
%   getenv('ROS_HOSTNAME')
%   getenv('ROS_IP')
%
%% 
% 可以使用<docid:matlab_ref.f76-1101530 |setenv|> 命令设置这些变量。设置环境变量后，调用没有参数的|rosinit|。ROS 
% master的地址由|ROS_MASTER_URI|指定，全局节点的通告地址advertised address由|ROS_IP| or |ROS_HOSTNAME|指定。如果您为|rosinit|指定其他参数，它们将覆盖环境变量中的值。
%%
% 
%   setenv('ROS_MASTER_URI','http://192.168.1.1:11311')
%   setenv('ROS_IP','192.168.1.100')
%   rosinit
%
%% 
% 您不必同时设置|ROS_HOSTNAME|和|ROS_IP|。如果两者都已设置，则以|ROS_HOSTNAME|为准。
%% Verify Connection
% 要使ROS连接正常工作，必须确保所有节点都能与主节点master和彼此通信。各个节点必须与主节点通信以注册订阅者subscribers、发布者publishers和服务services。它们还必须能够相互通信以发送和接收数据。如果你的ROS网络设置不正确，就有可能发送数据而无法接收数据（反之亦然）。
% 
% 此图显示了一个ROS网络，其中有一个ROS主节点master和两个向主节点注册的不同节点。每个节点联系主节点以查找ROS网络中另一个节点的通告地址advertised 
% address。一旦每个节点知道另一个节点的地址，就可以在不需要主节点参与的情况下建立数据交换。
% 
% 
%% Next Steps
%% 
% * See <docid:ros_ug.mw_fa34dc6f-351e-4ab5-8680-46563496814b Exchange Data 
% with ROS Publishers and Subscribers> to explore publishers and subscribers in 
% ROS.
%% 
% _Copyright 2014-2015 The MathWorks, Inc._
% 
%
##### SOURCE END #####
-->
</div></body></html>